﻿import { Router } from "express";
import { userDb } from "./auth";

const router = Router();

// 获取所有用户列表（管理员功能）
router.get("/users", (req, res) => {
  try {
    // 这里应该验证管理员权限，暂时简化
    
    const users = Array.from(userDb.values()).map(user => ({
      id: user.id,
      email: user.email,
      username: user.username,
      role: user.role,
      created_at: user.created_at,
      has_face: user.has_face
    }));

    return res.json({
      success: true,
      users: users
    });

  } catch (error: any) {
    console.error("获取用户列表错误:", error);
    return res.status(500).json({ 
      success: false, 
      message: "服务器内部错误" 
    });
  }
});

// 删除用户（管理员功能）
router.delete("/users/:userId", (req, res) => {
  try {
    const { userId } = req.params;
    
    if (!userDb.has(userId)) {
      return res.status(404).json({ 
        success: false, 
        message: "用户不存在" 
      });
    }

    userDb.delete(userId);
    console.log(`[管理员] 删除用户: ${userId}`);

    return res.json({
      success: true,
      message: "用户删除成功"
    });

  } catch (error: any) {
    console.error("删除用户错误:", error);
    return res.status(500).json({ 
      success: false, 
      message: "服务器内部错误" 
    });
  }
});

// 更新用户角色（管理员功能）
router.put("/users/:userId/role", (req, res) => {
  try {
    const { userId } = req.params;
    const { role } = req.body;
    
    if (!['user', 'admin'].includes(role)) {
      return res.status(400).json({ 
        success: false, 
        message: "角色只能是 user 或 admin" 
      });
    }

    const user = userDb.get(userId);
    if (!user) {
      return res.status(404).json({ 
        success: false, 
        message: "用户不存在" 
      });
    }

    user.role = role;
    userDb.set(userId, user);
    
    console.log(`[管理员] 更新用户角色: ${user.username} -> ${role}`);

    return res.json({
      success: true,
      message: "用户角色更新成功"
    });

  } catch (error: any) {
    console.error("更新用户角色错误:", error);
    return res.status(500).json({ 
      success: false, 
      message: "服务器内部错误" 
    });
  }
});

export default router;